李守中

Gentoo 更新 CPU 微码

Table of Contents

1. 确认内核特性是否开启

可以通过 /boot/config-<kernel-version>-gentoo 这个配置文件的内容来确认是否正确开启了内核特性以支持 CPU 微码更新:

$ cat /boot/config-5.15.88-gentoo | grep CONFIG_BLK_DEV_INITRD
CONFIG_BLK_DEV_INITRD=y

$ cat /boot/config-5.15.88-gentoo | grep CONFIG_MICROCODE
CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y

$ cat /boot/config-5.15.88-gentoo | grep CONFIG_MICROCODE_INTEL
CONFIG_MICROCODE_INTEL=y

如果配置文件丢了,决定重新编译内核,那么注意把这些功能编译进内核:

General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Processor type and features  --->
    [*] CPU microcode loading support
    [*]   Intel microcode loading support
    [*]   AMD microcode loading support

2. 针对包配置 USE flag ( 可选但推荐 )

编辑 /etc/portage/package.use/microcode 写入以下内容:

# for intel cpu microcode
sys-firmware/intel-microcode initramfs

# for amd cpu microcode
sys-kernel/linux-firmware initramfs

给这两个包都配上 initramfs 这个 USE flag 后,在更新 CPU 微码时系统会自动生成 /boot/intel-uc.img 或者 /boot/amd-uc.img 并自动重新生成对应的 initramfs。

这样以后每次微码更新时只需要执行 grub-mkconfig -o /boot/grub/grub.cfg 更新一下 grub 配置即可。

可以通过命令查一下 grub.cfg 里面是否加载了存有微码的 initramfs 文件:

$ grep initrd /boot/grub/grub.cfg
        initrd  /intel-uc.img /initramfs-5.15.88-gentoo.img
                initrd  /intel-uc.img /initramfs-5.15.88-gentoo.img
                initrd  /intel-uc.img /initramfs-5.15.88-gentoo.img

# 要查看匹配到的行的前后内容可以用这条命令,显示的信息更多
$ grep -B 18 -A 1 initrd /boot/grub/grub.cfg

3. 更新微码

执行 grep microcode /proc/cpuinfo 可以查看当前使用的微码版本。

AMD CPU 的微码更新通常与 sys-kernel/linux-firmware 一起分发:

emerge --ask sys-kernel/linux-firmware

Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,需要单独安装:

emerge --ask sys-firmware/intel-microcode

如果针对这两个包都加了 initramfs 这个 USE flag,那么系统已经自动生成了 /boot/intel-uc.img 或者 /boot/amd-uc.img 并自动重新生成对应的 initramfs 了。

如果没有配置,那么推荐配置一下然后重新安装一下上面提到的两个包。

最后执行 grub-mkconfig -o /boot/grub/grub.cfg 更新一下 grub 配置就完成了。

但如果非得要手动安装微码的话,Intel CPU 照着这篇文档操作AMD CPU 照着这篇文档操作。这两篇文档太长,而且上文已经给了解决方案了,就不在这翻译了。



Last Update: 2023-08-13 Sun 14:26

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: [email protected]

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议